package com.zx.auth.block.service;

import com.zx.auth.block.param.OAuth2ClientParam;
import com.zx.auth.block.vo.OAuth2RegisteredClientVO;
import com.zx.core.wrapper.ObjectWrapper;
import com.zx.core.wrapper.PageWrapper;
import com.zx.core.wrapper.ResponseWrapper;

/**
 * OAuth2客户端管理服务接口
 * 定义OAuth2客户端的业务逻辑接口
 */
public interface IOAuth2ClientService {

    /**
     * 创建新的OAuth2客户端
     *
     * @param clientParam 客户端参数
     * @return 创建结果
     */
    ResponseWrapper createClient(OAuth2ClientParam clientParam);

    /**
     * 根据ID获取OAuth2客户端信息
     *
     * @param id 客户端ID
     * @return 客户端信息
     */
    ObjectWrapper<OAuth2RegisteredClientVO> getClientById(String id);

    /**
     * 分页查询OAuth2客户端列表
     *
     * @param clientParam 客户端参数
     * @return 客户端列表
     */
    PageWrapper<OAuth2RegisteredClientVO> listClients(OAuth2ClientParam clientParam);

    /**
     * 更新OAuth2客户端信息
     *
     * @param clientParam 更新的客户端参数
     * @return 更新后的客户端信息
     */
    ResponseWrapper updateClient(OAuth2ClientParam clientParam);

    /**
     * 删除OAuth2客户端
     *
     * @param id 客户端ID
     * @return 删除结果
     */
    ResponseWrapper deleteClient(String id);
}